package iooperator;

import java.io.*;

/**
 * @Filename: ByteOperation
 * @Author: czh
 * @Data:2023/7/4 10:44
 * 字节操作(InputStream、OutputStream)
 */
public class ByteOperation {
    public static void main(String[] args) {
        String src = "D:\\workspace\\java\\src\\iooperator\\文件.docx";
        String dist = "D:\\workspace\\java\\src\\iooperator\\文件2.docx";
//        copyFile(src, dist);

        readFile();
    }

    /**
     * 文件复制
     */
    public static void copyFile(String src, String dist) {
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream(src);
            out = new FileOutputStream(dist);
            byte[] bytes = new byte[1024];
            // 记录每次实际读取的字节数
            int cnt;
            // in.read(bytes, 0, bytes.length) 从输入流中读取数据，并将读取的字节存储到 bytes 数组中
            //第一个参数 bytes 是存储读取数据的字节数组。
            //第二个参数 0 是指定从字节数组的哪个位置开始存储读取的数据。
            //第三个参数 bytes.length 是指定最多读取的字节数（即字节数组的长度）。
            while ((cnt = in.read(bytes, 0, bytes.length)) != -1) {
                out.write(bytes, 0, cnt);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

    /**
     * 读取文件
     */
    public static void readFile() {
        String src = "D:\\workspace\\java\\src\\iooperator\\服务器账号密码.txt";
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(src);
            byte[] bytes = new byte[1024];
            int len;
            while ((len = fileInputStream.read(bytes, 0, bytes.length)) != -1) {
                String data = new String(bytes, 0, len);
                System.out.println(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
